package com.coolrui.common.enums;

import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
 * 响应枚举状态码
 */
@Getter
public enum ResultCodeEnum {
    /** 请求成功 */
    SUCCESS(200, "请求成功"),
    /** 请求失败 */
    FAIL(201, "请求失败"),
    /** 参数错误 */
    VALID(202, "参数错误"),
    /** 系统异常 */
    EXCEPTION(203, "系统异常"),
    /** 重复请求 */
    DUPLICATE(204, "重复请求"),
    /** 请先登录 */
    UNAUTHORIZED(401, "请先登录"),
    /** 404 未找到 */
    NOTFOUND(404, "404 NotFound");

    private final Integer code;
    private final String message;

    ResultCodeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    // 使用缓存提升查找效率
    private static final Map<Integer, ResultCodeEnum> CODE_MAP = new HashMap<>();

    static {
        for (ResultCodeEnum codeEnum : values()) {
            CODE_MAP.put(codeEnum.code, codeEnum);
        }
    }

    /**
     * 根据状态码获取对应的消息
     * @param code 状态码
     * @return 对应的消息，如果未找到则返回 null
     */
    public static String of(Integer code) {
        ResultCodeEnum codeEnum = CODE_MAP.get(code);
        return codeEnum != null ? codeEnum.message : null;
    }
}